package com.hakim.wfb.customer.service;

import com.hakim.wfb.customer.params.trans.ConsumeRecordParameter;
import com.hakim.wfb.customer.params.trans.TransferCreditPointParameter;
import com.hakim.wfb.customer.params.user.*;
import com.hakim.wfb.customer.result.trans.ConsumeRecordView;
import com.hakim.wfb.customer.result.user.*;
import com.hkfs.fundamental.api.data.ListResultEx;
import com.hkfs.fundamental.api.data.ObjectResultEx;
import com.hkfs.fundamental.api.data.ResultEx;

/**
 * 系统用户服务
 * Created by YuHuanLong on 2017/3/13 0013.
 */
public interface UserService {

    /**
     * 用户注册
     *
     * @param param
     * @return
     */
    ResultEx registerUser(RegisterUserParameter param);

    /**
     * 用户登录
     *
     * @param parameter
     * @return
     */
    ObjectResultEx<LoginUserView> loginUser(LoginUserParameter parameter);

    /**
     * 用户登录日志
     *
     * @param parameter
     * @return
     */
    ResultEx loginUserLog(LoginUserLogParameter parameter);

    /**
     * 用户登出
     *
     * @param param
     * @return
     */
    ResultEx logoutUser(LogoutUserParameter param);

    /**
     * 用户信息
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserView> queryUserByRef(QueryUserByRefParameter param);


    /**
     * 用户详细信息
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserDetailView> queryUserDetail(GetUserDetailParameter param);

    /**
     * 获取我的邀请内容
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserInviteContentView> getInviteContent(GetInviteContentParameter param);

    /**
     * 绑定手机号码
     *
     * @param param
     * @return
     */
    ResultEx bindMobilephone(BindPhoneParameter param);

    /**
     * 查询用户是否已设置交易密码
     *
     * @param param
     * @return
     */
    ObjectResultEx<HasTradePasswordView> hasTradePassword(HasTradePasswordParameter param);

    /**
     * 查询用户是否已绑定电子钱包
     *
     * @param param
     * @return
     */
    ObjectResultEx<HasBindPacketView> hasBindPacket(HasBindPacketParameter param);

    /**
     * 查询用户是否已绑定手机号码
     *
     * @param param
     * @return
     */
    ObjectResultEx<HasBindPhoneView> hasBindPhone(HasBindPhoneParameter param);

    /**
     * 找回登录密码
     *
     * @param param
     * @return
     */
    ResultEx forgetLoginPassword(ForgetLoginPasswordParameter param);

    /**
     * 修改登录密码
     *
     * @param param
     * @return
     */
    ResultEx modifyLoginPassword(ModifyLoginPasswordParameter param);

    /**
     * 设置交易密码
     *
     * @param param
     * @return
     */
    ResultEx setTradePassword(SetTradePasswordParameter param);

    /**
     * 修改交易密码
     *
     * @param param
     * @return
     */
    ResultEx modifyTradePassword(ModifyTradePasswordParameter param);

    /**
     * @param userid
     * @return
     */
    ObjectResultEx<UserDetailView> getUserDetail(String userid);

    /**
     * 找回交易密码
     *
     * @param param
     * @return
     */
    ResultEx forgetTradePassword(ForgetTradePasswordParameter param);

    /**
     * 登录名查询用户是否存在
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserView> queryUserByUserCode(QueryUserParameter param);

    /**
     * 登录名查询用户是否存在
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserView> queryUserByUserPhone(QueryUserParameter param);

    /**
     * 登录名查询用户是否存在
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserView> queryUserByCardNo(QueryUserParameter param);

    /**
     * 获取用户详情
     *
     * @param param
     * @return
     */
    ObjectResultEx<UserDetailView> getUserDetail(GetUserDetailParameter param);

    /**
     * @param userid 被激活用户id
     * @param uuid   激活用户id
     * @return
     */
    ResultEx activateMember(String userid, String uuid);

    /**
     * 微信登录
     *
     * @param parameter
     * @return
     */
    ResultEx activateCustomer(ActivateCustomerParameter parameter);

    /**
     * @param parameter
     * @return
     */
    ResultEx sysTransferPoint(TransferCreditPointParameter parameter);

    /**
     * @param parameter
     * @return
     */
    ListResultEx<ConsumeRecordView> getAllInvest(ConsumeRecordParameter parameter);

    /**
     * 查询会员用户列表
     *
     * @param pageParameter
     * @return
     */
    ListResultEx<UserView> queryUserList(QueryCustomerWebPageParameter pageParameter);

    /**
     * @param userid
     * @return
     */
    UserDetailView getUserByTid(String userid);

    /**
     * @param tels
     * @param msg
     * @return
     */
    ResultEx validMsg(String tels, String msg);

    /**
     * @param name
     * @param identity
     * @return
     */
    ResultEx checkIdentity(String name, String identity);

}
